package com.itheima.controller;

import org.springframework.amqp.rabbit.core.RabbitMessagingTemplate;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

/**
 * 消息生产者
 * @author Johnny.Chen
 *
 */
@RestController
public class SendMsgController {
	
	//注入模板:  使用下面那个都可以
	//private RabbitTemplate rabbitTemplate;
	@Autowired
	private RabbitMessagingTemplate rabbitTemplate;
	
	
	/**
	 * 主题模式
	 * @param msg
	 * @return
	 */
	@PostMapping("/sendmsg3")
	public String sendmsg3(@RequestParam String msg,@RequestParam String key) {
		
		/*
		 * 参数一： 交换机的名称
		 * 参数二： Routing key 内容
		 * 参数三： 发送的消息： 基本数据类型和String、JavaBean、集合等
		 */
		rabbitTemplate.convertAndSend("testtopic",key,msg);
		
		return "主题模式：消息发送成功，请注意查询";
	}
	
	/**
	 * 分裂模式
	 * @param msg
	 * @return
	 */
	@PostMapping("/sendmsg2")
	public String sendmsg2(@RequestParam String msg) {
		
		/*
		 * 参数一： 交换机的名称
		 * 参数二： 留空【Routing key】
		 * 参数三： 发送的消息： 基本数据类型和String、JavaBean、集合等
		 */
		rabbitTemplate.convertAndSend("testfanout","",msg);
		
		return "分裂模式：消息发送成功，请注意查询";
	}
	
	
	
	/**
	 * 直接模式
	 * @param msg
	 * @return
	 */
	@PostMapping("/sendmsg")
	public String sendmsg(@RequestParam String msg) {
		
		/*
		 * 参数一： 队列的名称
		 * 参数二： 发送的消息： 基本数据类型和String、JavaBean、集合等
		 */
		rabbitTemplate.convertAndSend("itcast",msg);
		
		return "消息发送成功，请注意查询";
	}

}





